|
Pascal(パスカル)は、構造化された初期の代表的なプログラミング言語。 Pascal は、1970年にスイスのチューリッヒ工科大学のニクラウス・ヴィルトが教育用プログラミング言語として開発し、ALGOL の影響を受けた簡素で厳密な構造化言語仕様を持つ。教育目的で広まり、実用的にも初期の TeX や Macintosh の オペレーティングシステム、アプリケーションの記述も Pascal である。 ドナルド・クヌースの TeX プログラムは文芸的プログラミングシステムのWEBで書かれ、そこから文書と Pascal プログラムを生成する。現在でもパーソナルコンピュータ上の処理系が多数あり、多くの他のプログラミング言語、およびハードウェア記述言語の源泉になっている。名前は、世界で最初の機械式計算機を発明したブレーズ・パスカルの名前に因んだものである〔「」という名前に由来するとする説もある。〕。 == 言語仕様 == 教育を主目的としつつ、コンパイラが記述できる程度に強力な言語を目指し、当初、ヴィルト自身が Pascal コンパイラを Pascal 自身で書いてみせ、その能力を示した(後の Modula-2 では、オペレーティングシステムを Modula-2 で書いてみせた)。当時 FORTRAN 以外のコンパイラは生成される機械語が冗長で最適化が難しいと言われていたが、「言語仕様と最適化は独立した問題である」ことを証明するという目的もあったらしい。 Pascal の単純さはLL(1) 文法で解析できるという言語的な特徴によく現れている。全ての名札、定数、型名、変数、サブルーチン〔Pascalにおいては手続き( procedure )または関数(function )と呼び、値を返し式の中で用いうるものを特に関数と読んで区別する。〕は使用に先立って定義しておく必要がある。ポインタ型を用いたリストを構築するための例外、交互にサブルーチンが呼び合うための例外的書法を導入した。ポインタ型に限っては、基になる型の定義の前に、その型の変数を参照するポインタ型を定義することができた。また、サブルーチンの定義部分だけを先に記述する方法で解決した。その結果一文字先読再帰下降型パーザを用いたワンパスコンパイル、すなわちソーステキストを一回走査するだけで実行ファイルを生成することが可能だった。なお、他言語のコンパイラでは、2回以上走査を行い、最初の走査で識別子等の情報を中心に情報収集を行い、後続の走査で、それらの情報を参照しつつ実行ファイルを生成するマルチパス形式のものが多かった。また、C言語 などの文法は LL(1) 文法では説明できず、マルチパスを行う必要があった。後述の Turbo Pascal の高速性はアセンブラで記述されていたことも一因であるが、ワンパスによるコンパイルが可能な Pascal 言語の仕様を活かし、かつ、作業領域を全てメモリ上に確保して、ファイルアクセスを最小限に留める特徴がある。 ALGOL 由来の構造化構文、サブルーチンの中に、そのサブルーチン内からのみ見えるローカルな変数、そのサブルーチン内からのみ呼び出せるサブルーチン等を定義できるといった、スコープの概念と再帰的な構文構造(ブロック構造と呼ぶ)、静的スコープによる参照の局所化機能を持つ。さらに、豊富なデータ型と、COBOL に見られた構造体を含む新しいデータ型を定義できるという特徴も持っている。レコード型とポインタを用いてリスト、木といったデータ構造を自由に構築することができる(二分木#データの二分木への格納法の例参照)。 コンパイル時にできるだけ多くの不注意な誤りを発見するため強力に型付けた言語であり、またハードウェアを隠蔽する思想が徹底している。たとえば集合型、ポインタ型はそれぞれビットマップとアドレスを抽象化したものと考えられる。また Pascal は教育用ということもあり、最初の仕様では分割コンパイルや外部ライブラリの利用が考慮されていなかった。これは大規模なプログラムを記述したり、ハードウェアを直接操作するプログラムを記述するには不便な仕様であり、入出力の扱いなど処理系に依存しなければならない部分を言語の中に抱える結果に繋がった。たとえばファイル型変数に特定のファイルを関連付ける標準的な方法はない。ヴィルト自身は Modula-2 の設計でこれらの要請に応える一方で、Pascal 処理系のベンダがそれぞれ独自の拡張を施して、分割コンパイルやハードウェアの直接操作を可能としたが、この部分の互換性は乏しい。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Pascal」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Pascal (programming language) 」があります。 スポンサード リンク
|